#include<algorithm>
// std::sort: https://zh.cppreference.com/w/cpp/algorithm/sort
// constexpr算法的使用，会自动使用带constexpr的算法模式，不过有的算法没有constexpr形式
// 此示例最好在https://gcc.godbolt.org/中调试，这样才能容易看出是在编译期就执行了算法
#include<array>
constexpr auto sort(auto data)
{
    std::sort(data.begin(),data.end());
    return data;
}
int  main()
{
    // 注意在声明sorted_data时前面也要加constexpr
    constexpr auto sorted_data=sort(std::array{3,1,2});
    return sorted_data[0];
}


// 下面是编译选项为"-std=c++20  -O3"时的汇编代码结果
// 可以看出返回值eax为2,而其为sorted_data[0]中的值，表示在编译期已经
// 进行了sort 

// main:
//         mov     eax, 2
//         ret